#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
//二维数组测试
//1.二维数组的打印 
//2.冒泡排序-整数版本

//数组传参->降级为首元素地址
//二维数组的首元素地址 --> 第一行的地址 -> 第一行是一维数组,所以相当于传过去的是一维数组的地址,要用数组指针接收
//可以不知道有多少行,但是必须知道一行有多少个元素
void PrintArr1(int arr[][5],int row,int col) //用二维数组接收  void PrintArr1(int arr[3][5])
{
    for(int i = 0;i<row;i++)
    {
        for(int j = 0;j<col;j++)
        {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
}
void PrintArr2(int(*p)[5],int row,int col) //用数组指针接收,p指向的数组有5个元素，每个元素是int类型
{
    for(int i = 0;i<row;i++)
    {
        for(int j = 0;j<col;j++)
        {
            cout << p[i][j] << " ";
        }
        cout << endl;
    }
}

void BubbleSortInt(int* a,int n)
{
    //n个元素需要比较n-1趟,每一趟可以让一个元素到达指定的位置
    for(int i = 0;i<n;i++) 
    {
        bool flag = true;//假设已经有序
        for(int j = 0;j<n -1 -i;j++) //每一趟可以少比较一个已经排序好的元素
        {
            if(a[j] > a[j+1]) //前后元素比较
            {
                flag = false;
                ::swap(a[j],a[j+1]);
            }
        }
        if(flag)  break;
    }
}

int main()
{
    // int arr[3][5] = {
    //     {1,2,3,4,5},
    //     {6,7,8,9,10},
    //     {11,12,13,14,15}
    // };
    // int row = 3,col = 5;
    // PrintArr1(arr,row,col);
    // PrintArr1(arr,row,col);

    // int a[] = {9,8,7,5,6,4,2,7};
    // int n = sizeof(a)/sizeof(a[0]);
    // BubbleSortInt(a,n);
    // for(int i = 0;i<n;i++)
    //     cout << a[i] << "";

    char buf[] = {'b','d','a','c'};
    BubbleSortChar(buf);
    cout << buf  << endl;
    return 0;
}